package common.model.Entity.libraryEntity.enums;

/**
 * 罚款记录状态枚举。
 *
 * <p>与数据库字段 {@code status} 整数代码显式映射，保证序列化/反序列化一致性。</p>
 */
public enum FineStatus {

    /**
     * 未缴纳
     */
    UNPAID(0),

    /**
     * 已缴纳
     */
    PAID(1);

    /**
     * 数据库中存储的整数代码。
     */
    private final int code;

    /**
     * 构造器。
     * @param code
     */
    FineStatus(int code) {
        this.code = code;
    }

    /**
     * 获取与该枚举常量相关联的整数代码
     * @return
     */
    public int getCode() {
        return code;
    }

    public static FineStatus fromCode(int code) {
        switch (code){
            case 0: return UNPAID;
            case 1: return PAID;
            default: return null;
        }
    }
    /**
     * 根据字符串获取 FineStatus 枚举
     * @param value 字符串值
     * @return 对应的 FineStatus 若无匹配则返回 null
     */
    public static FineStatus fromString(String value){
        if(value != null){
            for(FineStatus status : FineStatus.values()){
                if(status.name().equalsIgnoreCase(value)){
                    return status;
                }
            }
        }
        return null;
    }
}
